Docker Compose হল একটি টুল যা একাধিক Docker কন্টেইনারকে সহজে পরিচালনা করতে ব্যবহৃত হয়। এটি একটি YAML ফাইল (docker-compose.yml) ব্যবহার করে, যেখানে অ্যাপ্লিকেশনের বিভিন্ন সার্ভিসের কনফিগারেশন, নেটওয়ার্ক, এবং ভলিউম উল্লেখ করা হয়। Docker Compose ডেভেলপারদের জন্য তাদের অ্যাপ্লিকেশনগুলোকে আরো কার্যকরীভাবে এবং সংগঠিতভাবে ডিপ্লয় ও পরিচালনা করার সুবিধা প্রদান করে।
Docker Compose-এর মূল বৈশিষ্ট্য
বহু-কন্টেইনার ব্যবস্থাপনা:
- Docker Compose ব্যবহার করে একসাথে একাধিক কন্টেইনারের জন্য অ্যাপ্লিকেশন তৈরি এবং পরিচালনা করা সম্ভব। এটি একটি অ্যাপ্লিকেশন, তার ডেটাবেস, এবং অন্যান্য সার্ভিসগুলি একসঙ্গে পরিচালনা করার সুবিধা দেয়।
সার্ভিস ডিফিনিশন:
docker-compose.ymlফাইলে প্রতিটি সার্ভিসের জন্য নির্দিষ্ট কনফিগারেশন দেওয়া হয়, যেমন ইমেজ, নেটওয়ার্ক, এবং ভলিউম।
নেটওয়ার্কিং:
- Docker Compose ডিফল্টভাবে সমস্ত সার্ভিসগুলিকে একই নেটওয়ার্কে যুক্ত করে, যা তাদের মধ্যে যোগাযোগ সহজ করে।
পরিবেশের ভেরিয়েবল:
- পরিবেশ ভেরিয়েবল ব্যবহার করে কন্টেইনারগুলির কনফিগারেশন নির্ধারণ করা যায়, যা অ্যাপ্লিকেশনের কনফিগারেশন পরিবর্তন করা সহজ করে।
সহজ শুরু এবং বন্ধ:
- Docker Compose ব্যবহার করে কন্টেইনারগুলি একসাথে শুরু এবং বন্ধ করা যায়, যা ডেভেলপমেন্ট ও টেস্টিং প্রক্রিয়াকে অনেক সহজ করে।
Docker Compose ব্যবহার করার পদক্ষেপ
১. docker-compose.yml ফাইল তৈরি করা
একটি নতুন ডিরেক্টরিতে docker-compose.yml নামের একটি ফাইল তৈরি করুন। নিচে একটি উদাহরণ দেওয়া হলো:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
networks:
- my-network
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: example
networks:
- my-network
cache:
image: redis:latest
networks:
- my-network
networks:
my-network:
২. Docker Compose কমান্ডগুলি ব্যবহার করা
Docker Compose অ্যাপ্লিকেশন শুরু করা:
এই কমান্ডটি docker-compose.yml ফাইলের সমস্ত সার্ভিস চালু করবে এবং লগ দেখতে পারবেন।
docker-compose up
ব্যাকগ্রাউন্ডে চালানো:
-d ফ্ল্যাগটি ব্যবহার করে কন্টেইনারগুলি ব্যাকগ্রাউন্ডে চালানো যাবে।
docker-compose up -d
কন্টেইনারগুলি বন্ধ করা:
এই কমান্ডটি সমস্ত কন্টেইনার বন্ধ করবে এবং পরিষ্কার করবে।
docker-compose down
কন্টেইনারের লগ দেখতে:
docker-compose logs
একটি নির্দিষ্ট সার্ভিসের লগ দেখতে:
docker-compose logs web
সারসংক্ষেপ
Docker Compose হল একটি গুরুত্বপূর্ণ টুল যা একাধিক Docker কন্টেইনারকে সহজে পরিচালনা করতে সহায়তা করে। এটি অ্যাপ্লিকেশন এবং তার সার্ভিসগুলির জন্য একটি পরিষ্কার এবং সংগঠিত কনফিগারেশন প্রদান করে, যা ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়াকে অনেক সহজ করে তোলে। Docker Compose ব্যবহার করে, আপনি একাধিক কন্টেইনারকে সহজে একত্রিত করে একটি সম্পূর্ণ অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Docker Compose একটি টুল যা ডেভেলপারদের জন্য কন্টেইনার ভিত্তিক অ্যাপ্লিকেশনগুলি সহজে ডিফাইন এবং পরিচালনা করতে সাহায্য করে। এটি একটি YAML ফাইল ব্যবহার করে, যা একাধিক Docker কন্টেইনারের কনফিগারেশন এবং সম্পর্ক সেট আপ করার সুযোগ দেয়। Docker Compose-এর মাধ্যমে, আপনি একটি স্বতন্ত্র কনফিগারেশন ফাইলে আপনার অ্যাপ্লিকেশন এবং তার বিভিন্ন পরিষেবাগুলির নির্ভরতাগুলি নির্দিষ্ট করতে পারেন, যা ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়াকে সহজতর করে।
Docker Compose কী?
বর্ণনা: Docker Compose আপনাকে একাধিক কন্টেইনারের একটি সেট আপ করার সুযোগ দেয়, যা একাধিক সার্ভিসের সমন্বয়ে গঠিত। এটি সাধারণত ডেভেলপমেন্ট, টেস্টিং এবং উৎপাদন পরিবেশে ব্যবহৃত হয়।
YAML ফাইল: Docker Compose একটি docker-compose.yml ফাইল ব্যবহার করে, যেখানে সমস্ত সার্ভিস, নেটওয়ার্ক, এবং ভলিউমের কনফিগারেশন অন্তর্ভুক্ত থাকে।
কমান্ড: Docker Compose CLI এর মাধ্যমে বিভিন্ন কমান্ড ব্যবহার করে কন্টেইনারগুলি তৈরি, চালানো, এবং পরিচালনা করা যায়।
Docker Compose-এর প্রয়োজনীয়তা
Docker ইনস্টলেশন: Docker Compose ব্যবহারের জন্য আপনার সিস্টেমে Docker ইনস্টল করা থাকতে হবে। Docker Compose Docker এর একটি অংশ, তাই Docker ইন্সটল হলে সাধারণত Docker Compose সহ আসে।
YAML ফাইল সম্পর্কে জানাশোনা: Docker Compose একটি YAML ফাইল ব্যবহার করে। তাই YAML ফাইলের গঠন এবং সিনট্যাক্স সম্পর্কে কিছু মৌলিক ধারণা থাকা দরকার।
কনটেইনার এবং সার্ভিস সম্পর্কে জানাশোনা: Docker Compose ব্যবহার করার আগে কনটেইনার এবং সার্ভিসের ধারণা বোঝা গুরুত্বপূর্ণ, কারণ এটি বিভিন্ন কন্টেইনারের মধ্যে যোগাযোগ এবং কার্যক্ষমতা নির্ধারণ করে।
CLI ব্যবহার: Docker Compose CLI এর মাধ্যমে পরিচালনা করা হয়। তাই CLI কমান্ডের সাথে পরিচিত থাকা দরকার।
Docker Compose ব্যবহার করার সুবিধা
সহজ কনফিগারেশন: একাধিক কন্টেইনারের জন্য কনফিগারেশন একটি YAML ফাইলে উল্লেখ করা যায়, যা পরিষ্কার এবং সংক্ষিপ্ত হয়।
একসাথে চলাচল: Docker Compose সমস্ত কন্টেইনারকে একসাথে শুরু এবং বন্ধ করার সুবিধা প্রদান করে, যা ডেভেলপমেন্ট এবং টেস্টিং প্রক্রিয়াকে সহজ করে।
পরিষেবাগুলির নির্ভরতাগুলি নির্ধারণ করা: পরিষেবাগুলির মধ্যে নির্ভরতাগুলি নির্ধারণ করা যায়, যাতে একটি পরিষেবা অন্য পরিষেবার উপর নির্ভরশীল হলে তা পরিচালনা করা সহজ হয়।
শক্তিশালী ডিপ্লয়মেন্ট: Docker Compose ডিপ্লয়মেন্টের জন্য সহজ উপায় সরবরাহ করে, যা অ্যাপ্লিকেশনকে ক্লাউড পরিবেশে বা স্বয়ংসম্পূর্ণ সার্ভারে পরিচালনা করতে সহায়ক।
সারসংক্ষেপ
Docker Compose হল একটি শক্তিশালী টুল যা একাধিক Docker কন্টেইনারের কনফিগারেশন এবং পরিচালনা সহজ করে। এটি YAML ফাইল ব্যবহার করে পরিষেবা এবং নির্ভরতাগুলির একটি পরিষ্কার কাঠামো প্রদান করে। Docker Compose ব্যবহারের জন্য Docker ইনস্টলেশন, YAML ফাইলের বোঝাপড়া, এবং কনটেইনার এবং সার্ভিস সম্পর্কে কিছু মৌলিক জ্ঞান থাকা প্রয়োজন। Docker Compose ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়াকে অনেক সহজ এবং কার্যকর করে তোলে।
docker-compose.yml ফাইলটি Docker Compose এর কনফিগারেশন ফাইল, যা YAML ফর্ম্যাটে লেখা হয়। এই ফাইলটি একাধিক Docker সার্ভিসের কনফিগারেশন সংজ্ঞায়িত করে, এবং এটি একটি অ্যাপ্লিকেশনকে চালানোর জন্য প্রয়োজনীয় সমস্ত তথ্য ধারণ করে। নিচে docker-compose.yml ফাইলের মৌলিক গঠন এবং এর উপাদানগুলো বিস্তারিতভাবে আলোচনা করা হলো।
Docker Compose YAML ফাইলের মৌলিক গঠন
version: '3.8' # Docker Compose এর সংস্করণ
services: # সার্ভিস ডিফিনিশন শুরু
web: # সার্ভিসের নাম
image: nginx:latest # ব্যবহৃত Docker ইমেজ
ports: # পোর্ট ম্যাপিং
- "8080:80"
networks: # নেটওয়ার্ক যুক্ত করা
- my-network
db: # আরেকটি সার্ভিসের নাম
image: mysql:latest # ব্যবহৃত Docker ইমেজ
environment: # পরিবেশ ভেরিয়েবল
MYSQL_ROOT_PASSWORD: example
networks: # নেটওয়ার্ক যুক্ত করা
- my-network
cache: # তৃতীয় সার্ভিসের নাম
image: redis:latest # ব্যবহৃত Docker ইমেজ
networks: # নেটওয়ার্ক যুক্ত করা
- my-network
networks: # নেটওয়ার্ক ডিফিনিশন
my-network: # নেটওয়ার্কের নাম
উপাদানসমূহের ব্যাখ্যা
version:
- Docker Compose ফাইলের সংস্করণ নির্ধারণ করে। এটি বিভিন্ন সংস্করণের জন্য বৈশিষ্ট্য এবং কার্যকারিতা নিয়ন্ত্রণ করে। সাধারণত, সর্বশেষ স্থিতিশীল সংস্করণ ব্যবহার করা হয় (যেমন
'3.8')।
services:
- এটি একটি ব্লক যা অ্যাপ্লিকেশনটির বিভিন্ন সার্ভিসগুলিকে সংজ্ঞায়িত করে। প্রতিটি সার্ভিসের নামের পরে একটি কনফিগারেশন ব্লক থাকবে।
service_name:
- সার্ভিসের নাম, যেমন
web,db,cacheইত্যাদি। এটি সাধারণত কন্টেইনারের উদ্দেশ্য নির্দেশ করে।
image:
- ব্যবহার করা Docker ইমেজের নাম। এটি অফিসিয়াল Docker Hub থেকে বা স্থানীয় ইমেজ থেকে হতে পারে। উদাহরণস্বরূপ,
nginx:latest।
ports:
- কন্টেইনার এবং হোস্টের মধ্যে পোর্ট ম্যাপিং। এটি নির্দেশ করে কোন হোস্ট পোর্ট কন্টেইনারের কোন পোর্টের সাথে সংযুক্ত হবে। উদাহরণস্বরূপ,
"8080:80"অর্থাৎ হোস্টের 8080 পোর্ট কন্টেইনারের 80 পোর্টের সাথে সংযুক্ত।
networks:
- এই ব্লকটি কন্টেইনারগুলির জন্য কিভাবে যোগাযোগ হবে তা নির্ধারণ করে। একাধিক সার্ভিস একই নেটওয়ার্কে যুক্ত হলে তারা একে অপরের সাথে সহজেই যোগাযোগ করতে পারে।
environment:
- পরিবেশ ভেরিয়েবল নির্ধারণ করে। যেমন ডেটাবেসের জন্য রুট পাসওয়ার্ড নির্ধারণ করতে
MYSQL_ROOT_PASSWORDব্যবহার করা হয়েছে।
networks:
- এখানে বিভিন্ন নেটওয়ার্কের নাম এবং কনফিগারেশন উল্লেখ করা হয়। এই উদাহরণে,
my-networkনামে একটি নেটওয়ার্ক তৈরি করা হয়েছে।
সারসংক্ষেপ
docker-compose.yml ফাইলটি Docker Compose ব্যবহার করে অ্যাপ্লিকেশনটির সমস্ত সার্ভিস, কনফিগারেশন, এবং নেটওয়ার্কের জন্য একটি কেন্দ্রিয় কনফিগারেশন ফাইল। এর সঠিক গঠন এবং উপাদানগুলো বোঝার মাধ্যমে আপনি সহজেই বিভিন্ন সার্ভিসগুলিকে একটি সাথে পরিচালনা করতে পারবেন। Docker Compose ফাইল ব্যবহারের মাধ্যমে আপনার অ্যাপ্লিকেশন ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়া আরও কার্যকরী এবং সংগঠিত হয়ে ওঠে।
Docker Compose ব্যবহার করে একটি Multi-container Application তৈরি করা একটি সহজ এবং কার্যকর প্রক্রিয়া। এটি বিভিন্ন কন্টেইনারকে একত্রিত করে একটি স্বতন্ত্র অ্যাপ্লিকেশন তৈরি করতে সক্ষম করে, যেখানে প্রতিটি কন্টেইনার একটি নির্দিষ্ট পরিষেবা পরিচালনা করে। এখানে একটি উদাহরণ দেয়া হলো যা একটি ওয়েব অ্যাপ্লিকেশন, একটি ডেটাবেস এবং একটি ক্যাশ সার্ভার নিয়ে গঠিত।
উদাহরণ: Multi-container Application তৈরি করা
আমরা একটি সাধারণ ওয়েব অ্যাপ্লিকেশন তৈরি করবো যা Flask (Python ফ্রেমওয়ার্ক) ব্যবহার করে এবং PostgreSQL ডেটাবেস এবং Redis ক্যাশ ব্যবহার করবে।
১. প্রজেক্ট ফোল্ডার তৈরি করা
প্রথমে একটি নতুন ডিরেক্টরি তৈরি করুন এবং সেখানে যান:
mkdir my-multi-container-app
cd my-multi-container-app
২. Flask অ্যাপ্লিকেশন তৈরি করা
একটি ফাইল তৈরি করুন app.py নামে এবং নিচের কোড লিখুন:
from flask import Flask
import os
import psycopg2
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello from Flask!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
৩. requirements.txt তৈরি করা
একটি requirements.txt ফাইল তৈরি করুন এবং নিচের লাইব্রেরিগুলি যুক্ত করুন:
Flask
psycopg2-binary
৪. Dockerfile তৈরি করা
একটি Dockerfile তৈরি করুন এবং নিম্নলিখিত কনটেন্ট যুক্ত করুন:
# বেস ইমেজ হিসাবে Python ব্যবহার করা হচ্ছে
FROM python:3.9-slim
# কাজের ডিরেক্টরি সেট করুন
WORKDIR /app
# প্রয়োজনীয় ফাইলগুলি কপি করুন
COPY requirements.txt .
# নির্ভরতাগুলি ইনস্টল করুন
RUN pip install -r requirements.txt
# অ্যাপ্লিকেশন কপি করুন
COPY . .
# ডিফল্ট কমান্ড নির্ধারণ করুন
CMD ["python", "app.py"]
৫. docker-compose.yml ফাইল তৈরি করা
এখন, docker-compose.yml ফাইল তৈরি করুন এবং নিচের কনটেন্ট যুক্ত করুন:
version: '3.8'
services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- db
- cache
db:
image: postgres:latest
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydatabase
volumes:
- db-data:/var/lib/postgresql/data
cache:
image: redis:latest
volumes:
db-data:
৬. Docker Compose ব্যবহার করে Multi-container Application শুরু করা
১. Docker Compose তৈরি করা
Docker Compose অ্যাপ্লিকেশন তৈরি করতে, নিচের কমান্ডটি ব্যবহার করুন:
docker-compose up --build
--buildফ্ল্যাগটি নিশ্চিত করে যে Dockerfile থেকে নতুন ইমেজ তৈরি করা হবে।
২. অ্যাপ্লিকেশন পরীক্ষা করা
ব্রাউজারে গিয়ে http://localhost:5000 খুলুন। আপনি "Hello from Flask!" বার্তা দেখতে পাবেন।
৩. কন্টেইনারগুলি বন্ধ করা
কন্টেইনারগুলি বন্ধ করতে, নিচের কমান্ডটি ব্যবহার করুন:
docker-compose down
সারসংক্ষেপ
Docker Compose ব্যবহার করে Multi-container Application তৈরি করা সহজ এবং কার্যকর। উপরের উদাহরণে, একটি Flask অ্যাপ্লিকেশন, PostgreSQL ডেটাবেস এবং Redis ক্যাশ সার্ভার নিয়ে একটি অ্যাপ্লিকেশন তৈরি করা হয়েছে। docker-compose.yml ফাইলটি সমস্ত সার্ভিস এবং নির্ভরতাগুলি সংজ্ঞায়িত করে, যা ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়াকে সহজ করে তোলে। Docker Compose আপনার কন্টেইনার ভিত্তিক অ্যাপ্লিকেশনগুলি কার্যকরভাবে পরিচালনা করতে সাহায্য করে।
Docker Compose কমান্ডগুলি ব্যবহার করে আপনি আপনার কন্টেইনার ভিত্তিক অ্যাপ্লিকেশনগুলি তৈরি, পরিচালনা এবং ডিপ্লয় করতে পারেন। নিচে Docker Compose এর কিছু সাধারণ কমান্ড এবং তাদের উদাহরণ আলোচনা করা হলো।
সাধারণ Docker Compose Command
1. Docker Compose Up
এই কমান্ডটি docker-compose.yml ফাইল থেকে সমস্ত সার্ভিস চালু করে।
docker-compose up
- ব্যাকগ্রাউন্ডে চালানো:
-dফ্ল্যাগটি কন্টেইনারগুলোকে ব্যাকগ্রাউন্ডে চালানোর জন্য ব্যবহৃত হয়।
docker-compose up -d
2. Docker Compose Down
এই কমান্ডটি সমস্ত চালু কন্টেইনার বন্ধ করে এবং তাদের পরিষ্কার করে।
docker-compose down
- এটি সকল কন্টেইনার বন্ধ করবে এবং তাদের তৈরি করা ভলিউম এবং নেটওয়ার্কগুলোও মুছে ফেলবে।
3. Docker Compose Logs
এই কমান্ডটি সমস্ত সার্ভিসের লগ দেখায়।
docker-compose logs
- নির্দিষ্ট সার্ভিসের লগ দেখতে:
docker-compose logs web
4. Docker Compose PS
এই কমান্ডটি চালু কন্টেইনারগুলোর একটি তালিকা প্রদর্শন করে।
docker-compose ps
5. Docker Compose Build
এই কমান্ডটি আপনার docker-compose.yml ফাইলের ভিত্তিতে নতুন ইমেজ তৈরি করে।
docker-compose build
6. Docker Compose Exec
এই কমান্ডটি চালু কন্টেইনারের মধ্যে একটি নতুন শেল চালু করে।
docker-compose exec web sh
- এখানে
webহল সার্ভিসের নাম, এবং এটিshশেল চালু করবে।
7. Docker Compose Pull
এই কমান্ডটি আপনার docker-compose.yml ফাইলে উল্লেখিত ইমেজগুলো Docker Hub থেকে ডাউনলোড করে।
docker-compose pull
8. Docker Compose Restart
এই কমান্ডটি চালু সার্ভিসগুলো পুনরায় শুরু করে।
docker-compose restart
সারসংক্ষেপ
Docker Compose ব্যবহারের মাধ্যমে আপনি কন্টেইনার ভিত্তিক অ্যাপ্লিকেশনগুলি সহজে পরিচালনা করতে পারেন। উপরের কমান্ডগুলো Docker Compose ব্যবহার করে বিভিন্ন কাজ সম্পন্ন করতে সাহায্য করে, যেমন কন্টেইনার শুরু করা, লগ দেখা, কন্টেইনার বন্ধ করা, এবং নতুন ইমেজ তৈরি করা। Docker Compose আপনার ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়াকে অনেক বেশি কার্যকরী করে তোলে।
Read more